/**
 * Copyright ©2003~2019年4月9日 szkingdom
 * @author raohj
 * @date 2019年4月9日
 * @file RNashorn.java
 * @comment : please input your comment to this file
 * @version : input version
 * @modify:
 * 		1、 2019年4月9日 由 raohj 新建文件
 */
package com.ccnu.demojava.nashorn;

import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
import java.io.FileNotFoundException;
import java.io.FileReader;

/**
 * @author raohj
 * @date 2019年4月9日
 * @version 
 * @comment to add your comment
 */
public class RNashorn {
	/**
	 * @author raohj
	 * @date 2019年4月9日
	 * @comment 执行js脚本
	 * @param 
	 * @return 
	 */
	public static void exeScript() {
		ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
		try {
			engine.eval("print('Hello World!')");
		} catch (ScriptException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	/**
	 * @author raohj
	 * @date 2019年4月9日
	 * @comment java调用js函数
	 * @param 
	 * @return 
	 */
	public static void jsFunc() {
		ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
		try {
			engine.eval(new FileReader("D:/temp/1.js"));
			Invocable inv = (Invocable)engine;
			Object result = inv.invokeFunction("max", 1,2);
			System.out.println("max(1,2) = " + result);
		} catch (ScriptException | FileNotFoundException | NoSuchMethodException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public static int max(int i, int j) {
		return (i>j)?i:j;
	}
	
	/**
	 * @author raohj
	 * @date 2019年4月9日
	 * @comment js调用java对象及函数
	 * @param 
	 * @return 
	 */
	public static void javaFunc() {
		ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
		try {
			engine.eval(new FileReader("D:/temp/2.js"));
		} catch (ScriptException | FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
